package system;

import java.util.ArrayList;

/*
 * LAS MAQUINAS DEBEN COLOCAR UNA BANDERA SI ESTAN DISPONIBLES PARA SER CARGADAS O SI YA TERMINARON
 * DE PROCESAR LA PIEZA PARA QUE SEA RETIRADA. ENTONCES EL ROBOT DEBE PREGUTNAR CONSTANTEMENTE A
 * LAS MAQUINAS EN QUE ESTADO SE ENCUENTRAN. (ESTO PARA ISW)
 * 
 * PARA CONCURRENTE LA COMUNICACION DEBE SER POR MEDIO DE SOCKETS.
 */
public class Robot extends Thread
{
    private boolean estaOcupado;
    private String nombre;
    private Sistema sistema;
    private ArrayList<Lugar> alcanzabilidad = new ArrayList<Lugar>();
    
	public Robot(String nombre, Sistema sistema, ArrayList<Lugar> lista){
		this.estaOcupado = false;
		this.nombre = nombre;
		this.sistema = sistema;
		alcanzabilidad = lista;
		
    }
	
	public void mover(Lugar origen, Lugar destino)
    {
    	if(this.getEstaOcupado() == false){
    		
    		this.setEstaOcupado(true);
    		
    	if(destino.getTipo()=="Maquina")
    		if(destino.getCantPiezas()<2){

        		System.out.println("HAY EN " + origen.getNombre() + " " + origen.getCantPiezas());
        		System.out.println("HAY EN " + destino.getNombre() + " " + destino.getCantPiezas());
        		System.out.println("===========================================================");
    			
        		this.sacar(origen);
        		//this.retardo();
        		this.colocar(destino);
    		}
    		else 
    			System.out.println("------------->MAQUINA OCUPADA<-------------");
    	
    	else if(destino.getTipo()!="Maquina")
    	{

    		System.out.println("HAY EN " + origen.getNombre() + " " + origen.getCantPiezas());
    		System.out.println("HAY EN " + destino.getNombre() + " " + destino.getCantPiezas());
    		System.out.println("===========================================================");
    		
    		this.sacar(origen);
    		//this.retardo();
    		this.colocar(destino);
    	}
    	
    	imprimirEspaciosEnBlaco();
    	this.setEstaOcupado(false);
    }
    	else
    		System.out.println("------------>ROBOT OCUPADO--------------");
    }
    public void sacar(Lugar origen){
    	System.out.println("Sacando pieza de " + origen.getNombre());
		origen.decCantPiezas();  
    }
    public void colocar(Lugar destino){
    	System.out.println("Colocando pieza en " + destino.getNombre());
    	if(destino.getCantPiezas() < 2)
		destino.incCantPiezas();
    }
    public boolean getEstaOcupado() {
		return estaOcupado;
	} 
	public void setEstaOcupado(boolean b){
		estaOcupado = b;
	}
	public void imprimirEspaciosEnBlaco(){

		System.out.println();
		System.out.println();
		System.out.println();
		System.out.println();
	}
	/*public void retardo(){
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
				e.printStackTrace();
			}
	}*/
	public void getNombre(){
		System.out.println(nombre);
	}
	}